#ifndef PACKET_H
#define PACKET_H

#include "protocol.h"
#include <vector>
#include <cstring>

class Packet {
private:
    std::vector<uint8_t> data_;

public:
    // 构造数据包
    void buildPacket(uint8_t src_addr, uint8_t dst_addr, uint8_t cmd, 
                    const void* payload, uint16_t payload_len);
    
    // 解析数据包
    bool parsePacket(const std::vector<uint8_t>& raw_data, 
                    uint8_t& src_addr, uint8_t& dst_addr, uint8_t& cmd,
                    std::vector<uint8_t>& payload);
    
    // 获取打包后的数据
    const std::vector<uint8_t>& getData() const { return data_; }
    
    // 清空数据
    void clear() { data_.clear(); }
    
private:
    // 小端序写入16位数据
    void writeUint16LE(uint16_t value);
    
    // 小端序读取16位数据
    uint16_t readUint16LE(const uint8_t* data) const;
};

#endif // PACKET_H